Skip to content

Conversation

@aloktion
Copy link
Owner

@aloktion aloktion commented Jan 14, 2025

This patch adds support for configuring GTP-U and PPPoE RSS and Flow Director (FDIR) offloads for Virtual Functions (VFs) in the ice driver.

Key features introduced:

  • Support for GTP-U over IPv4/IPv6 with optional extension headers.
  • Inner IPv4/UDP/TCP matching for AVF FDIR:
    • ipv4 + gtpu/gtpu_eh + ipv4 + udp/tcp
  • PPPoE session ID-based flow classification.
  • Raw pattern-based RSS and FDIR programming via virtchnl.
  • Symmetric hashing support for raw and protocol-based flows.
  • Enhanced virtchnl interface to support new offload capabilities.

The implementation includes:

  • Flow engine and parser updates to support new protocol fields.
  • Virtchnl interface extensions for VF-PF communication.
  • RSS and FDIR profile management improvements.
  • Conflict resolution and rollback logic for overlapping profiles.
  • Backward compatibility with existing AVF and DCF implementations.

Tested with AVF and DCF drivers supporting the extended virtchnl interface and validated with representative GTP-U and PPPoE traffic patterns.

Signed-off-by: Aleksandr Loktionov aleksandr.loktionov@intel.com

@aloktion aloktion force-pushed the add-gtpu branch 2 times, most recently from 1f489b0 to 83faeb9 Compare January 14, 2025 19:16
@aloktion aloktion changed the title i40e: add GTP-U support for iavf ice: add GTP-U support for iavf Jan 15, 2025
@aloktion aloktion force-pushed the add-gtpu branch 4 times, most recently from f4dd1fa to fd2d08b Compare January 16, 2025 16:31
@aloktion aloktion force-pushed the add-gtpu branch 2 times, most recently from c68bf51 to 4314635 Compare January 17, 2025 11:31
@aloktion aloktion marked this pull request as ready for review January 17, 2025 11:36
@aloktion aloktion force-pushed the add-gtpu branch 8 times, most recently from 76f0ba9 to 722c38a Compare January 24, 2025 10:40
@aloktion aloktion force-pushed the add-gtpu branch 3 times, most recently from 1ebeb7b to 1397373 Compare January 30, 2025 11:48
@aloktion aloktion changed the title ice: add GTP-U support for iavf ice: add PF GTP-U RSS/FDIR configuration for VFs Jan 30, 2025
@aloktion aloktion requested a review from pkitszel January 30, 2025 11:49
@aloktion aloktion force-pushed the add-gtpu branch 4 times, most recently from 0fa4034 to e94b336 Compare April 7, 2025 16:35
@aloktion aloktion force-pushed the add-gtpu branch 2 times, most recently from 321f6b0 to e134df9 Compare April 22, 2025 09:10
Copy link

@jacob-keller jacob-keller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This version looks pretty good, I think there are a few minor refactors you did to match out-of-tree which shouldn't be done.

I also think this would benefit from being split apart to have relevant refactors and changes required for GTPU support in separate commits to aid review. This is a lot of code in one change right now.

int err;

if (is_tun && !ice_get_open_tunnel_port(&pf->hw, &port_num, TNL_ALL))
if (is_tun && !ice_get_open_tunnel_port(&pf->hw, TNL_ALL, &port_num))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Przemek mentioned this on list,. I agree with him that we shouldn't reverse the order of arguments on this function for seemingly no reason. If you just want to align upstream with out-of-tree, we should invert the order out-of-tree.

ice_release_res(hw, ICE_CHANGE_LOCK_RES_ID);
}


Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unecessary extra whitespace here.

ice_add_prof(struct ice_hw *hw, enum ice_block blk, u64 id,
unsigned long *ptypes, const struct ice_ptype_attributes *attr,
u16 attr_cnt, struct ice_fv_word *es, u16 *masks, bool symm,
bool fd_swap)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, we switched to bitmap from u8[] here, which explains the difference in parameters. Ok.

cfg->addl_hdrs, cfg->hash_flds,
cfg->hdr_type, cfg->symm);
cfg->addl_hdrs, cfg->hash_flds, cfg->hdr_type,
cfg->symm);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this change does cleanup formatting. If you keep it, it should be part of a different patch since netdev typically doesn't like code format changes in the same patches as new development.

#include <net/xdp_sock_drv.h>

#define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver"
#define DRV_SUMMARY "Intel(R) Ethernet Connection E800 Series Linux Driver +GTP-Uv12"

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change makes sense for testing but isn't something that would typically go in a final patch.

#define VIRTCHNL_VF_OFFLOAD_FDIR_PF BIT(28)
#define VIRTCHNL_VF_OFFLOAD_QOS BIT(29)
#define VIRTCHNL_VF_CAP_DCF BIT(30)
#define VIRTCHNL_VF_CAP_PTP BIT(31)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should minimize this to only the changes required to add GTPU support, and leave the other bits blank , perhaps with a patch up front that adds reservation comments.

@aloktion aloktion force-pushed the add-gtpu branch 3 times, most recently from 5ee6395 to ff78b2a Compare June 10, 2025 15:00
This patch adds support for configuring GTP-U and PPPoE RSS and Flow Director (FDIR) offloads for Virtual Functions (VFs) in the ice driver.

Key features introduced:
- Support for GTP-U over IPv4/IPv6 with optional extension headers.
- Inner IPv4/UDP/TCP matching for AVF FDIR:
    - ipv4 + gtpu/gtpu_eh + ipv4 + udp/tcp
- PPPoE session ID-based flow classification.
- Raw pattern-based RSS and FDIR programming via virtchnl.
- Symmetric hashing support for raw and protocol-based flows.
- Enhanced virtchnl interface to support new offload capabilities.

The implementation includes:
- Flow engine and parser updates to support new protocol fields.
- Virtchnl interface extensions for VF-PF communication.
- RSS and FDIR profile management improvements.
- Conflict resolution and rollback logic for overlapping profiles.
- Backward compatibility with existing AVF and DCF implementations.

Tested with AVF and DCF drivers supporting the extended virtchnl interface and validated with representative GTP-U and PPPoE traffic patterns.

Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants